package com.hsgene.user.persistence;

import com.hsgene.user.condition.CompanyCondition;
import com.hsgene.user.domain.Company;
import com.hsgene.user.dto.orginazation.CompanyDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @description:
 * @projectName: hdas-geneshop-server
 * @package: com.hsgene.order.persistence
 * @author: maodi
 * @createDate: 2018/11/5 10:06
 * @version: 1.0
 * Copyright: Copyright (c) 2018
 */
@Repository
public interface CompanyRepository {

    /**
     * @param condition 公司条件
     * @return int
     * @description 公司条件查询数量
     * @author maodi
     * @createDate 2018/11/6 16:34
     */
    int queryCompanyCountByCondition(CompanyCondition condition);

    /**
     * @param condition 公司条件
     * @return java.util.List<com.hsgene.user.domain.Company>
     * @description 公司条件查询
     * @author maodi
     * @createDate 2018/11/6 16:38
     */
    List<CompanyDto> queryCompanyByCondition(CompanyCondition condition);

    /**
     * @param id 公司id
     * @return java.util.List<com.hsgene.user.domain.Company>
     * @description 公司根据id查询
     * @author maodi
     * @createDate 2018/11/6 16:38
     */
    List<Company> queryCompanyById(@Param("id") String id);

    /**
     * @param companyName 公司名字
     * @return int
     * @description 公司名字查询数量
     * @author maodi
     * @createDate 2018/11/6 18:01
     */
    int queryCompanyCountByName(@Param("companyName") String companyName);

    /**
     * @param companyName 公司名称
     * @param companyId   公司id
     * @return int
     * @description 公司名字除本身外查询数量
     * @author maodi
     * @createDate 2018/11/7 15:04
     */
    int queryCompanyCountByNameExcludeSelf(@Param("companyName") String companyName, @Param("companyId") String
            companyId);

    /**
     * @param
     * @return java.util.List<Map<String,Object>>
     * @description 公司名字下拉框数据源
     * @author maodi
     * @createDate 2018/11/7 9:10
     */
    List<Map<String, Object>> selectCompany();

    /**
     * @param company 公司
     * @return void
     * @description 公司新增
     * @author maodi
     * @createDate 2018/11/6 16:39
     */
    int insertCompany(Company company);

    /**
     * @param company 公司
     * @return void
     * @description 公司修改
     * @author maodi
     * @createDate 2018/11/6 16:40
     */
    int updateCompany(Company company);

    /**
     * @param company 公司
     * @return void
     * @description 公司删除
     * @author maodi
     * @createDate 2018/11/6 16:40
     */
    int deleteCompany(Company company);

    /**
     * @param companyIds     公司id数组
     * @param updateDateTime 更新时间
     * @return int
     * @description 公司批量删除
     * @author maodi
     * @createDate 2018/11/13 17:04
     */
    int deleteCompanyMulti(@Param("companyIds") String[] companyIds, @Param("updateDateTime") Date updateDateTime);

    /**
     * @param companyId 公司id
     * @return java.lang.Integer
     * @description 查询公司id在系统用户表中使用数量
     * @author maodi
     * @createDate 2018/11/29 11:34
     */
    Integer queryOperationAccountCountByCompanyId(@Param("companyId") String companyId);
    /**
     *根据公司名称查询公司
     * @author FX
     * @date 2019/1/7 11:02
     * @param companyName
     * @return
     */
    Company queryCompanyByName(String companyName);
}
